package chemtools_logica.LN.SFBean;

import chemtools_logica.BDL.IR.BDL_SFFormulaRemote;

import chemtools_logica.BDL.IR.BDL_SFTransformacionesRemote;

import chemtools_logica.Beans.FormulaBean;

import chemtools_logica.Entidades.Formula;

import chemtools_logica.Entidades.Transformacion;

import chemtools_logica.LN.IL.LN_SFFormulaLocal;
import chemtools_logica.LN.IR.LN_SFFormulaRemote;

import java.text.SimpleDateFormat;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.annotation.Resource;

import javax.ejb.EJB;
import javax.ejb.SessionContext;
import javax.ejb.Stateless;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

@Stateless(name = "LN_SFFormula", mappedName = "map-LN_SFFormula")
public class LN_SFFormulaBean implements LN_SFFormulaRemote, LN_SFFormulaLocal {
    @Resource
    SessionContext sessionContext;
    @PersistenceContext(unitName = "Chemtools_Logica")
    private EntityManager em;

    public LN_SFFormulaBean() {
    }
    @EJB
    BDL_SFFormulaRemote bDL_SFFormulaRemote;
    

    public List<FormulaBean> getAllFormulas() {

        return changeListEntidadForBean(bDL_SFFormulaRemote.getFormulaFindAll());

    }

    public List<FormulaBean> buscaFormulas(FormulaBean buscaFormulaBean) {
        return changeListEntidadForBean(bDL_SFFormulaRemote.getFormulaFindBean(buscaFormulaBean));
    }
    
    public int registraFormula(FormulaBean formulaBean) {
        return bDL_SFFormulaRemote.insertFormula(changeBeanForEntidad(formulaBean));
    }
    
    public void updateFormula(FormulaBean formulaBean) {
        FormulaBean bean = new FormulaBean();
        bean.setIdFormula(formulaBean.getIdFormula());
        bean.setEstado(-1);
        Formula entity = bDL_SFFormulaRemote.getFormulaFindBean(bean).get(0);
        entity.setDescripcion(formulaBean.getDescripcion());
        entity.setNombre_Creador(formulaBean.getNombre_Creador());
        entity.setApellido_Creador(formulaBean.getApellido_Creador());
        entity.setEstado(formulaBean.getEstado());
        bDL_SFFormulaRemote.mergeFormula(entity);
    }
    
    public void removerFormula(FormulaBean formulaBean){
            bDL_SFFormulaRemote.removeFormula(changeBeanForEntidad(formulaBean));
        }
    
    public Formula changeBeanForEntidad(FormulaBean formulaBean) {
            Formula formula = new Formula();
            formula.setDescripcion(formulaBean.getDescripcion());
            formula.setNombre_Creador(formulaBean.getNombre_Creador());
            formula.setApellido_Creador(formulaBean.getApellido_Creador());
            formula.setFecha_Creacion(new Date());
            System.out.print(new Date());
            formula.setEstado(1);
            return formula;
        }
    
    public List<FormulaBean> changeListEntidadForBean(List<Formula> formulaEntidad) {
        List<FormulaBean> formulabean = new ArrayList<FormulaBean>();
        
        for (Formula entidad : formulaEntidad) {
            FormulaBean bean = new FormulaBean();
            bean.setApellido_Creador(entidad.getApellido_Creador());
            bean.setDescripcion(entidad.getDescripcion());
            bean.setEstado(entidad.getEstado());
            bean.setFecha_Creacion(entidad.getFecha_Creacion());
            bean.setIdFormula(entidad.getIdFormula());
            bean.setNombre_Creador(entidad.getNombre_Creador());
            formulabean.add(bean);
        }
        return formulabean;
    }
    public boolean formulaUsada(int idFormula){
        return bDL_SFFormulaRemote.transformacionesxFormula(idFormula).size()>0;
        }
}
